# -*- coding: utf-8 -*-
'''
@author: Ricardo Faria 6315 e Luís Freitas 5602
@date: 3 Dezembro de 2012
Classe que lê um xls e envia os seus dados para uma base de dados sqlite3
'''
import xlrd
import sqlalchemy
import sqlite3

book = xlrd.open_workbook('Inscritos_2010-2011 (formato Excel xls).xls')
lista=[]
newList = [0]*54 #criar lista com tamanho 54
sh = book.sheet_by_index(30)

#class Criar(Base)
#    nome = "nenhum"
#    criar_db()

'''
Mátodo que vai cria uma lista com os dados da uma linha
'''
def linha(line):
    del lista[:]
    for i in sh.row_values(line):
        lista.append(i)
        pass    
    c = 0            
    for el in lista:
        #ciclo que caso uma celula esteja vazia,
        #preenche essa celula com o conteudo da anterios
        #serve para facilitar nas pesquisas
        if el != "":
            newList[c] = lista[c]            
        c+=1

'''
Método que cria a base de dados e instroduz
todos os dados em uma tabela
'''
def criar_db():
    conn = sqlite3.connect('dados.sqlite3')
    cursor = conn.cursor()
    last_line = 11957
    try:
        cursor.execute('''CREATE TABLE Dados(estabelecimento, unidade, nivel, curso, area, ano95, ano96, ano97, ano98, ano99, ano2000, ano2001, ano2002, ano2003, ano2004, ano2005, ano2006, ano2007, ano2008, ano2009, ano2010)''')
        x = 4 #numero da linha em que começamos a introduzir
        while x < last_line: ##x < que ultima linha que contem dados
            '''
            Dentro deste while chamamos o método linha para obter a lista
            de cada linha e introduzimos na tabela Dados
            '''
            linha(x)
            instrucao = '''INSERT INTO Dados (estabelecimento, unidade, nivel, curso, area, ano95, ano96, ano97, ano98, ano99, ano2000, ano2001, ano2002, ano2003, ano2004, ano2005, ano2006, ano2007, ano2008, ano2009, ano2010) VALUES('%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s')'''%(newList[0], newList[1], newList[2], newList[3].replace("'", " "), newList[4], lista[7], lista[10], lista[13], lista[16], lista[19], lista[22], lista[25], lista[28], lista[31], lista[34], lista[37], lista[40], lista[43], lista[46], lista[49], lista[52])
            cursor.execute(instrucao)
            x+=1
        conn.commit()
        cursor.close()
    except Exception:
       pass
        
criar_db()
